The JAVA® programming language, prior to JAVA® Development Kit (JDK) 1.4, does not provide a way to interrupt blocking calls. This creates a problem within a Web or ENTERPRISE JAVABEANS® (EJB) component model container when a thread handling a request makes an external call to a Hypertext Transfer Protocol (HTTP) or EJB service that does not return. The thread blocks on the call and waits until a Transmission Control Protocol (TCP) timeout closes the connection.
A shortcoming of the TCP timeout is that it cannot be controlled by the application. Further, since the TCP timeout is usually set to a very high value, a supplier application may not be able to meet external or internal customer service level agreements for timely application processing and responses using the TCP timeout. Reliance on the TCP timeout can cause suppliers to lose sales and customers while risking software and hardware crashes due to a large quantity of open customer connections.